home *** CD-ROM | disk | FTP | other *** search
- /*
- For general Scribus (>=1.3.2) copyright and licensing information please refer
- to the COPYING file provided with the program. Following this notice may exist
- a copyright and/or license notice that predates the release of Scribus 1.3.2
- for which a new license (GPL+exception) is in place.
- */
- #ifndef SCRIBUS_API_H
- #define SCRIBUS_API_H
-
- /*
- * This header provides a macro to handle correct symbol imports/exports
- * on platforms that require explicit instructions to make symbols public,
- * or differentiate between exported and imported symbols.
- *
- * Currently, that's win32, but gcc4's facilities for more selective
- * exports can be tied into this too (see bug #1961).
- *
- * Use this macro in the declaration of classes that must be exported
- * to plug-ins. With current Scribus code, that's most of them.
- *
- * Usage examples:
- *
- * class SCRIBUS_API PageItem
- * {
- * ...
- * };
- *
- * bool SCRIBUS_API doThatThing(void);
- *
- * For an exception type that may be thrown across a DSO boundary, you must
- * use:
- *
- * class SCEXCEPTIONAPI(SCRIBUS_API) MyException
- * {
- * ...
- * };
- *
- * For information on the gcc visibility support see:
- * http://gcc.gnu.org/wiki/Visibility
- * http://people.redhat.com/drepper/dsohowto.pdf
- *
- */
-
- #ifdef _WIN32
- #ifdef COMPILE_SCRIBUS_MAIN_APP
- #define SCRIBUS_API __declspec(dllexport)
- #else
- #ifdef COMPILE_PLUGIN_AS_DLL
- #define SCRIBUS_API __declspec(dllimport)
- #else
- #define SCRIBUS_API
- #endif
- #endif
- #else
- #ifdef HAVE_GCC_SYMBOL_VISIBILITY
- /* Forces inclusion of a symbol in the symbol table, so
- software outside the current library / app can use it. */
- #define SCRIBUS_API __attribute__ ((visibility("default")))
- /* Within a section exported with SCRIBUS_API, forces a symbol to be
- private to the library / app. Good for private members. */
- #define SCRIBUS_LOCAL __attribute__ ((visibility("hidden")))
- #else
- #define SCRIBUS_API
- #define SCRIBUS_LOCAL
- #endif
- #endif
-
- /* Throwable classes must always be visible on GCC in all binaries */
- #ifdef WIN32
- #define SCEXCEPTIONAPI(api) api
- #elif defined(HAVE_GCC_SYMBOL_VISIBILITY)
- #define SCEXCEPTIONAPI(api) SCRIBUS_API
- #else
- #define SCEXCEPTIONAPI(api)
- #endif
-
- #endif
-